package alejandro.castro.extras;

import alejandro.castro.bolita.Bolita;

public class Liberado extends EstadoComportamientoBloque {
	
	public static EstadoComportamientoBloque instancia;
	
	public static EstadoComportamientoBloque getInstance(){
		if(instancia == null){
			instancia = new Liberado();
		}
		return instancia;
	}
	
	@Override
	public void corregirPosicionCon(Bolita bolita, BloqueComponent bloque) {
		if(bloque.coincidePosicionX(bolita)){
			bloque.efectoFriccion(bolita);
			if(bolita.mueveHaciaArriba()){
				bolita.rebotarPorDebajoContra(bloque.borderTop());
			}
			else{
				bolita.rebotarPorArribaContra(bloque.borderBottom());
			}
			bolita.invertirYMove();				
		}
		else if(bloque.coincidePosicionY(bolita)){
			System.out.println("contra borde");
			bloque.efectoFriccion(bolita);
			if(bolita.mueveHaciaDerecha()){
				bolita.rebotarPorDerechaContra(bloque.borderLeft());
			}
			else{
				bolita.rebotarPorIzquierdaContra(bloque.borderRight());
			}
			bolita.invertirXMove();		
		}
		else{
			//TODO falta el comportamiento de la bolita rebotando en los vertices
		}
	}

	
	

}
